﻿using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace YouDaoNotesCodes.JSON
{
    class JsonPropertyUse
    {
        [JsonProperty]
        private string reMsg { get; set; }//　序列化时默认都是处理公共成员，如果需要处理非公共成员，就要在该成员上加特性"JsonProperty"\

        //通过JsonProperty属性设置的方法，可以实现某一属性特别处理的需求，如默认值处理，空值处理，自定义属性名处理，格式化处理。上面空值处理实现
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public string flag { get; set; }//空值处理忽略，反序列化的时候字段为空是不显示

        [JsonProperty("Code")]//自定义属性名处理，注意：反序列化使用是用reCode，序列化为JSON时字段显示Code
        public string reCode { get; set; }
        public string other { get; set; }//此处用private 序列化不显示

        //对于Dateime类型日期的格式化就比较麻烦了，系统自带的会格式化成iso日期标准;
        //但是实际使用过程中大多数使用的可能是yyyy-MM-dd 或者yyyy-MM-dd HH:mm:ss两种格式的日期，
        //解决办法是可以将DateTime类型改成string类型自己格式化好，然后在序列化。如果不想修改代码，可以采用下面方案实现。
        [JsonConverter(typeof(IsoDateTimeConverter))]
        public DateTime Birthday { get; set; }
    }
}
